ABI Methods
This page provides a detailed reference for all the methods in the AsaMetadataManager
smart contract.
The methods are divided into three categories:
- Write Methods: These change the state of the contract.
- Read-Only Methods: These are for querying data and do not change state.
- Log-Based Read-Only Methods: These methods return data via transaction logs to overcome the 4KB AVM return limit.
A brief overview of the data structures used in these methods can be found in the Data Structures page.
Write Methods
These methods alter the contract's state and require the sender to be an authorized metadata manager for the specified asset. An event is emitted for every successful state change.
update_manager
Updates the contract's global manager. Only callable by the current contract manager.
new_manager
(address
): The address of the new global manager.
add_asset_metadata_manager
Adds a new address to the list of authorized managers for a specific asset.
- If this is the first time a manager is being added for an asset, the initial list of managers will be populated with the asset's creator, manager, reserve, and the contract's global manager.
asset
(asset
): The ASA this operation is for.new_manager
(address
): The address to add as a manager.
remove_asset_metadata_manager
Removes an address from the list of authorized managers. The last manager for an asset cannot be removed.
asset
(asset
): The ASA this operation is for.manager
(address
): The address to remove.
set_description
Sets or updates the description for an asset.
asset
(asset
): The ASA this operation is for.description
(byte[]
): The description text (max 240 bytes).
set_image_icon
Sets or updates the image icon URL for an asset.
asset
(asset
): The ASA this operation is for.image_icon
(byte[]
): The URL of the icon (max 96 bytes).
manage_wallet_label
Adds, updates, or removes a wallet label for an asset. The contract supports up to 20 wallet labels per asset.
asset
(asset
): The ASA this operation is for.wallet_label
((address,byte,byte[])
): TheWalletLabel
struct, which contains:address
(address
): The wallet address to label.type
(byte
): An enumerated type (1-255), e.g., 1=Burn, 2=Team.description
(byte[]
): A description for the label (max 60 bytes).
Usage:
- To add a new label, provide the
WalletLabel
struct with a new, un-labeled address. - To update an existing label, provide the
WalletLabel
with an existing address and the newtype
and/ordescription
. - To remove an existing label, provide the
WalletLabel
with the address to remove, atype
of0
, and adescription
that is an empty byte array of size 60 (bytes(60)
).
manage_field
Adds, updates, or removes a custom field (e.g., social media links) for an asset. The contract supports up to 15 custom fields per asset.
asset
(asset
): The ASA this operation is for.field
((byte[2],byte[])
): TheField
struct, which contains:label
(byte[2]
): An enumerated type (1-65535), e.g., 1=Twitter, 2=Telegram.value
(byte[]
): The URL or custom value for the field (max 96 bytes).
Usage:
- To add a new field, provide the
Field
struct with a new, unusedlabel
. - To update an existing field, provide the
Field
with an existinglabel
and the newvalue
. - To remove an existing field, provide the
Field
with thelabel
to remove and avalue
that is an empty byte array of size 96 (bytes(96)
).
gas
A utility method to increase the opcode budget for complex operations. This method can be called in a group transaction with other methods to ensure they have enough execution resources.
Read-Only Methods
These methods are for querying data and do not change state. They return data directly.
get_asset_core_metadata
asset
(asset
): The ASA to query.- Returns:
(byte[],byte[],uint64,(byte[2],byte[])[])
(TheAssetMetadata
struct).
get_asset_image_icon
asset
(asset
): The ASA to query.- Returns:
byte[]
(The image icon URL).
get_asset_description
asset
(asset
): The ASA to query.- Returns:
byte[]
(The description).
get_asset_wallet_labels
asset
(asset
): The ASA to query.- Returns:
(address,byte,byte[])[]
(Array ofWalletLabel
structs).
get_asset_fields
asset
(asset
): The ASA to query.- Returns:
(byte[2],byte[])[]
(Array ofField
structs).
get_asset_last_updated
asset
(asset
): The ASA to query.- Returns:
uint64
(The Unix timestamp of the last update).
get_asset_metadata_managers
asset
(asset
): The ASA to query.- Returns:
address[]
(Array of manager addresses).
get_manager
- Returns:
address
(The global contract manager).
arc62_get_circulating_supply
Calculates circulating supply based on the asset's total supply minus the balance of the reserve address and all labeled wallets.
asset_id
(uint64
): The ID of the ASA.- Returns:
uint64
(The circulating supply).
Log-Based Read-Only Methods
To overcome the AVM's 4KB return limit, these read-only methods use transaction logs to output data. A client calling these methods must capture and decode the ABI-encoded logs to reconstruct the data. If a requested piece of data does not exist, an empty log is emitted instead of data/error.
get_asset_metadata
A flexible bulk getter for a single asset. It returns data via logs based on the boolean flags provided.
asset_id
(uint64
): The ASA to query.include_asset_full
(bool
): If true, logs the asset's full on-chain parameters (AssetFull
struct).include_core_metadata
(bool
): If true, logs the coreAssetMetadata
struct.include_wallet_labels
(bool
): If true, logs an array ofWalletLabel
orWalletLabelWithBalance
structs.include_managers
(bool
): If true, logs an array of manager addresses.include_circulating_supply
(bool
): If true, logs the calculated circulating supply (uint64
).include_wallet_labels_balances
(bool
): If true andinclude_wallet_labels
is also true, logs an array ofWalletLabelWithBalance
structs instead ofWalletLabel
structs. This flag modifies the output ofinclude_wallet_labels
.- Returns:
None
. Data is returned in logs.
get_asset_metadata_bulk
A flexible bulk getter for multiple assets. It behaves like get_asset_metadata
but iterates over an array of assets, logging the requested data for each one sequentially.
assets
(uint64[]
): An array of ASA IDs.- (Same boolean flags as
get_asset_metadata
) - Returns:
None
. Data is returned in logs.
get_asset_holding
Retrieves the balance of a specific asset for a single address.
asset_id
(uint64
): The ASA to query.address
(address
): The account address.- Returns:
None
. The balance (uint64
) is returned in a log.
get_asset_holding_bulk
Retrieves the balance of a specific asset for multiple addresses.
asset_id
(uint64
): The ASA to query.address
(address[]
): An array of account addresses.- Returns:
None
. A sequence of balances (uint64
) is returned in logs, one for each address.